home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / LITTLE / BMSRC.ZIP / SCREEN.S < prev    next >
Encoding:
Text File  |  1997-02-02  |  18.5 KB  |  671 lines

  1.  
  2. *-------------------------------------------------------*
  3.             rsset    -($186*2)
  4. *-------------------------------------------------------*
  5. VGemCStep        rs.w    3
  6. VGemPlanes        rs.w    41
  7. VGemX            rs.w    1
  8. VGemY            rs.w    12
  9. VGemCol            rs.w    310
  10. VCelHT            rs.w    1
  11. VCelMX            rs.w    1
  12. VCelMY            rs.w    1
  13. VCelWR            rs.w    14
  14. VXMax            rs.w    4
  15. VYMax            rs.w    1
  16. VBytesLin        rs.w    1
  17. *-------------------------------------------------------*
  18. *        LineA base (0)                *
  19. *-------------------------------------------------------*
  20. VPlanes            rs.w    1
  21. VWrap            rs.w    1
  22. *-------------------------------------------------------*
  23.  
  24. *-------------------------------------------------------*
  25.             rsreset
  26. *-------------------------------------------------------*
  27. mt_mono            rs.b    1
  28. mt_rgb            rs.b    1
  29. mt_vga            rs.b    1
  30. mt_tv            rs.b    1
  31.  
  32. *-------------------------------------------------------*
  33. monitor_detect:
  34. *-------------------------------------------------------*
  35.     push.w        #89
  36.     trap        #14
  37.     addq        #2,sp
  38.     move.b        d0,monitor_type
  39.     rts
  40.     
  41. *-------------------------------------------------------*
  42. *    Back up old GEM / TOS screen for clean exit    *
  43. *-------------------------------------------------------*
  44. save_screen:
  45. *-------------------------------------------------------*
  46. *    Store original settings                *
  47. *-------------------------------------------------------*
  48.     push.w        #2
  49.     trap        #14
  50.     addq.l        #2,sp
  51.     move.l        d0,os_screen
  52.     push.w        #-1
  53.     push.w        #88
  54.     trap        #14
  55.     addq.l        #4,sp
  56.     move.w        d0,os_modecode
  57.     push.w        d0
  58.     push.w        #91
  59.     trap        #14
  60.     addq.l        #4,sp
  61.     move.l        d0,os_screen_size
  62.     rts
  63.  
  64. *-------------------------------------------------------*
  65. restore_screen:
  66. *-------------------------------------------------------*
  67.     cmp.l        #-1,phys_handle
  68.     beq.s        .err
  69.     move.l        os_screen,a0
  70.     move.w        os_modecode,d0
  71.     bsr        set_video
  72. .err:    rts
  73.  
  74. *-------------------------------------------------------*
  75. save_palette:
  76. *-------------------------------------------------------*
  77.     move.w        os_modecode,d0
  78.     btst        #true_bit,d0
  79.     bne.s        .err
  80.     and.w        #%111,d0
  81.     moveq        #2,d1
  82.     bra.s        .strt
  83. .shft:    mulu.w        d1,d1
  84. .strt:    dbra        d0,.shft
  85.     pea        os_palette
  86.     push.w        d1
  87.     push.w        #0
  88.     push.w        #94
  89.     trap        #14
  90.     lea        10(sp),sp
  91. .err:    rts
  92.  
  93. *-------------------------------------------------------*
  94. restore_palette:
  95. *-------------------------------------------------------*
  96.     move.w        os_modecode,d0
  97.     btst        #true_bit,d0
  98.     bne.s        .err
  99.     and.w        #%111,d0
  100.     moveq        #2,d1
  101.     bra.s        .strt
  102. .shft:    mulu.w        d1,d1
  103. .strt:    dbra        d0,.shft
  104.     pea        os_palette
  105.     push.w        d1
  106.     push.w        #0
  107.     push.w        #93
  108.     trap        #14
  109.     lea        10(sp),sp
  110. .err:    rts
  111.  
  112. *-------------------------------------------------------*
  113. default_video:
  114. *-------------------------------------------------------*
  115.     dc.w        $A000
  116.     move.l        d0,a0
  117.     cmp.w        #16,VPlanes(a0)
  118.     beq        .system_mode
  119. *-------------------------------------------------------*
  120. .videl_mode:
  121. *-------------------------------------------------------*
  122. *    Custom display - use double/triple-buffering    *
  123. *-------------------------------------------------------*
  124.     move.b        #3,clearcount
  125.     bsr        setup_videl_screen
  126.     bra.s        .mode_done
  127. *-------------------------------------------------------*
  128. .system_mode:
  129. *-------------------------------------------------------*
  130. *    System display - no double/triple-buffering    *
  131. *-------------------------------------------------------*
  132.     move.b        #1,clearcount
  133.     bsr        setup_system_screen
  134. *-------------------------------------------------------*
  135. .mode_done:
  136. *-------------------------------------------------------*
  137. *    Calculate useful screen variables        *
  138. *-------------------------------------------------------*
  139.     move.w        screen_w,d1
  140.     move.w        d1,scrwidth
  141.     add.w        d1,d1
  142.     move.w        d1,bytewidth
  143. *-------------------------------------------------------*
  144. *    Create optional fastram screenbuffer        *
  145. *-------------------------------------------------------*
  146.     ifd        frsb
  147.     move.w        bytewidth,d0
  148.     mulu.w        #max_yres,d0
  149.     add.l        #8192*2,d0
  150.     moveq        #VRAM_preferred,d1
  151.     bsr        allocate_chunk
  152.     add.l        #8192-1,d0
  153.     and.l        #-8192,d0
  154.     move.l        d0,ScreenLog
  155.     endc
  156.     rts
  157.     
  158. *-------------------------------------------------------*
  159. *    Configure screen output for system display    *
  160. *-------------------------------------------------------*
  161. setup_system_screen:
  162. *-------------------------------------------------------*
  163. *    Custom video mode does not exist        *
  164. *-------------------------------------------------------*
  165.     move.l        #-1,phys_handle
  166.     move.w        #-1,modecode
  167.     sf        videl_mode
  168. *-------------------------------------------------------*
  169. *    Set up display variables            *
  170. *-------------------------------------------------------*
  171.     move.l        os_screen,ScreenPhy
  172.     move.l        os_screen,ScreenLog
  173.     move.l        os_screen,ScreenBak
  174.     move.l        os_screen_size,phys_size
  175.     move.w        os_screen_w,screen_w
  176.     move.w        os_screen_h,screen_h
  177. *-------------------------------------------------------*
  178. *    Clear screen                    *
  179. *-------------------------------------------------------*
  180.     move.l        os_screen,a0
  181.     move.l        os_screen_size,d0
  182.     lsr.l        #2,d0
  183.     jsr        clearlongs
  184.     rts    
  185.  
  186. *-------------------------------------------------------*
  187. *    Configure screen output for custom display    *
  188. *-------------------------------------------------------*
  189. setup_videl_screen:
  190. *-------------------------------------------------------*
  191. *    Tune relevant modecode for this monitor        *
  192. *-------------------------------------------------------*
  193.     move.w        #vga|pal,d0
  194.     move.w        d0,d1
  195.     not.w        d0
  196.     and.w        os_modecode,d1
  197.     and.w        default_modecode,d0
  198.     or.w        d1,d0
  199.     btst        #vga_bit,d0
  200.     beq.s        .nvga
  201.     bclr        #pal_bit,d0
  202.     eor.w        #lace,d0
  203. .nvga:    move.w        d0,modecode
  204. *-------------------------------------------------------*
  205. *    Interrogate screen size (memory)        *
  206. *-------------------------------------------------------*
  207.     push.w        d0
  208.     push.w        #91
  209.     trap        #14
  210.     addq.l        #4,sp
  211.     move.l        d0,phys_size
  212. *-------------------------------------------------------*
  213. *    Allocate space for 2 or 3 screen buffers    *
  214. *-------------------------------------------------------*
  215.     move.l        phys_size,d0
  216.     jsr        allocate_screens
  217. *-------------------------------------------------------*
  218. *    Switch to new video mode            *
  219. *-------------------------------------------------------*
  220.     move.l        ScreenPhy,a0
  221.     move.w        modecode,d0
  222.     jsr        set_video
  223. *-------------------------------------------------------*
  224. *    Work out screen dimensions from size & span    *
  225. *-------------------------------------------------------*
  226.     moveq        #0,d1
  227.     move.w        $FFFF8210.w,d1
  228.     move.w        d1,screen_w
  229.     add.l        d1,d1
  230.     move.l        phys_size,d0
  231.     divu.l        d1,d0
  232.     move.w        d0,screen_h
  233. *-------------------------------------------------------*
  234. *    No brick-bat fix for TV/RGB            *
  235. *-------------------------------------------------------*
  236.     sf        brick_bat
  237. *-------------------------------------------------------*
  238. *    Brick-bat determination - avoid 4:6 ratios    *
  239. *-------------------------------------------------------*
  240.     moveq        #0,d1
  241.     move.w        screen_w,d1
  242.     moveq        #0,d2
  243.     move.w        screen_h,d2
  244.     swap        d1
  245.     swap        d2
  246.     divu.l        #640,d1
  247.     divu.l        #480,d2
  248.     lsr.l        #8,d1
  249.     lsl.l        #8,d2
  250.     divu.l        d1,d2
  251.     cmp.l        #$18000,d2
  252.     ble        .normal_mode
  253. *-------------------------------------------------------*
  254. *    Check ilace & dline                *
  255. *-------------------------------------------------------*
  256.     move.w        $FFFF82C2.w,d0
  257.     bclr        #1,d0
  258.     bne.s        .new_mode    
  259.     bset        #0,d0
  260.     bne.s        .normal_mode
  261. *-------------------------------------------------------*
  262. *    Update ilace/dline                *
  263. *-------------------------------------------------------*
  264. .new_mode:
  265. *-------------------------------------------------------*
  266.     move.w        d0,$FFFF82C2.w
  267. *-------------------------------------------------------*
  268. *    Half screen-height (4:6 -> 4:3)            *
  269. *-------------------------------------------------------*
  270.     lsr.w        screen_h
  271. *-------------------------------------------------------*
  272. *    Deallocate screen                *
  273. *-------------------------------------------------------*
  274.     move.l        phys_handle,d0
  275.     bsr        deallocate_chunk
  276. *-------------------------------------------------------*
  277. *    Reallocate half-sized screen buffers        *
  278. *-------------------------------------------------------*
  279.     move.l        phys_size,d0
  280.     lsr.l        d0
  281.     jsr        allocate_screens
  282. *-------------------------------------------------------*
  283. *    Set new screenbase                *
  284. *-------------------------------------------------------*
  285.     move.l        ScreenPhy,a0
  286.     bsr        set_base    
  287. *-------------------------------------------------------*
  288. *    Brick-bat flag                    *    
  289. *-------------------------------------------------------*
  290.     st        brick_bat
  291. *-------------------------------------------------------*
  292. .normal_mode:
  293. *-------------------------------------------------------*
  294. *    Calculate number of scanlines            *
  295. *-------------------------------------------------------*
  296.     bsr        calculate_video_lines
  297. *-------------------------------------------------------*
  298. *    Finish setting up videl                *
  299. *-------------------------------------------------------*
  300.     move.w        SCAN_START.w,upper_border
  301.     move.w        SCAN_STOP.w,lower_border
  302.     bsr        adjust_scanlines
  303.     st        videl_mode
  304. *-------------------------------------------------------*
  305. *    Set background colour                *
  306. *-------------------------------------------------------*
  307.     move.l        #(bg_colour<<8),d0
  308.     lsr.w        #8,d0
  309.     move.l        d0,$FFFF9800.w
  310.     rts
  311.  
  312. *-------------------------------------------------------*
  313. calculate_video_lines:
  314. *-------------------------------------------------------*
  315.     sf        dline_active
  316.     sf        ilace_active
  317.     move.w        screen_h,d0
  318.     moveq        #1,d2        ; start with halflines
  319.     move.w        $FFFF82C2.w,d0
  320.     btst        #0,d0
  321.     beq.s        .nodl
  322.     addq.w        #1,d2        ; dline = 2x normal scanlines
  323.     st        dline_active
  324. .nodl:    btst        #1,d0
  325.     beq.s        .noil
  326.     subq.w        #1,d2        ; ilace = 1/2 normal scanlines
  327.     st        ilace_active
  328. .noil:    move.w        d2,scan_shift
  329.     rts
  330.  
  331. *-------------------------------------------------------*
  332. allocate_screens:
  333. *-------------------------------------------------------*
  334.     ifd        frsb
  335. *-------------------------------------------------------*
  336. *    Allocate 2 screenbuffers for 'FRSB' mode    *
  337. *-------------------------------------------------------*
  338.     mulu.l        #2,d0
  339.     move.l        d0,display_size
  340.     add.l        #8192*2,d0
  341.     moveq        #STRAM_only,d1
  342.     bsr        allocate_chunk
  343.     move.l        d0,phys_handle
  344.     add.l        #8192-1,d0
  345.     and.l        #-8192,d0
  346.     move.l        d0,display_start
  347.     move.l        d0,ScreenPhy
  348.     add.l        phys_size,d0
  349.     move.l        d0,ScreenBak
  350. *-------------------------------------------------------*
  351.     elseif
  352. *-------------------------------------------------------*
  353. *    Allocate 3 screenbuffers for 'direct' mode    *
  354. *-------------------------------------------------------*
  355.     mulu.l        #3,d0
  356.     move.l        d0,display_size
  357.     add.l        #8192*2,d0
  358.     moveq        #STRAM_only,d1
  359.     bsr        allocate_chunk
  360.     move.l        d0,phys_handle
  361.     add.l        #8192-1,d0
  362.     and.l        #-8192,d0
  363.     move.l        d0,display_start
  364.     move.l        d0,ScreenLog
  365.     add.l        phys_size,d0
  366.     move.l        d0,ScreenPhy
  367.     add.l        phys_size,d0
  368.     move.l        d0,ScreenBak
  369. *-------------------------------------------------------*
  370.     endc
  371. *-------------------------------------------------------*
  372. *    Clear screenbuffers                *
  373. *-------------------------------------------------------*
  374.     move.l        display_start,a0
  375.     move.l        display_size,d0
  376.     lsr.l        #2,d0
  377.     jsr        clearlongs
  378.     rts
  379.     
  380. *-------------------------------------------------------*
  381. set_video:
  382. *-------------------------------------------------------*
  383.     move.w        d0,temp_modecode
  384.     move.l        a0,temp_physbase
  385. *-------------------------------------------------------*
  386.     push.w        #37
  387.     trap        #14
  388. *-------------------------------------------------------*
  389.     push.w        #-1
  390.     push.w        #-1
  391.     push.l        temp_physbase
  392.     push.l        temp_physbase
  393.     push.w        #5
  394.     trap        #14
  395. *-------------------------------------------------------*
  396.     push.w        #37
  397.     trap        #14
  398. *-------------------------------------------------------*
  399.     push.w        temp_modecode
  400.     push.w        #88
  401.     trap        #14
  402. *-------------------------------------------------------*
  403.     push.w        #37
  404.     trap        #14
  405. *-------------------------------------------------------*
  406.     lea        2+2+2+14+4(sp),sp
  407.     rts
  408.  
  409. *-------------------------------------------------------*
  410. set_base:
  411. *-------------------------------------------------------*
  412.     push.w        #-1
  413.     push.l        a0
  414.     push.l        a0
  415.     push.w        #5
  416.     trap        #14
  417.     lea        12(sp),sp
  418.     rts
  419.  
  420. *-------------------------------------------------------*
  421. *    Wipe framebuffer                *
  422. *-------------------------------------------------------*
  423.     txtlong
  424. *-------------------------------------------------------*
  425. clearscreen:
  426. *-------------------------------------------------------*
  427.     tst.b        refresh
  428.     bne.s        .go
  429.     rts
  430. .go:    subq.b        #1,refresh
  431.     move.w        screen_w,d0
  432.     tst.b        videl_mode
  433.     bne.s        .videl
  434.     mulu.w        screen_h,d0
  435.     bra.s        .ok
  436. .videl:    mulu.w        viewport_height,d0
  437. .ok:    lsr.l        d0
  438. *-------------------------------------------------------*
  439. clearlongs:
  440. *-------------------------------------------------------*
  441.     movem.l        d0-d4/a0,-(sp)
  442. *---------------------------------------------------------------*
  443.     lsl.l        #2,d0        ; size in bytes
  444.     beq.s        .done        ; check for zero
  445. *---------------------------------------------------------------*
  446.     move.l        a0,d4
  447.     add.l        d0,d4        ; block end
  448. *---------------------------------------------------------------*
  449.     moveq        #0,d2
  450. *---------------------------------------------------------------*
  451. *    Clear initial segment (bytes: 0->7)            *
  452. *---------------------------------------------------------------*
  453.     moveq        #8-1,d1
  454.     add.l        a0,d1
  455.     and.w        #-8,d1
  456.     sub.l        a0,d1        ; initial segment size (0-7)
  457.     sub.l        d1,d0
  458.     bpl.s        .c1g        ; initial segment <= total size
  459.     add.l        d0,d1        ; initial segment = total size
  460. .c1l:    move.b        d2,(a0)+
  461. .c1g:    dbra        d1,.c1l
  462.     tst.l        d0
  463.     beq.s        .done        ; job done    
  464. *---------------------------------------------------------------*
  465.     move.l        d0,d3
  466.     lsr.l        #2,d3
  467. *---------------------------------------------------------------*
  468. *    Clear main segment (longwords)                *
  469. *---------------------------------------------------------------*
  470.     moveq        #8-1,d1
  471.     and.l        d3,d1
  472.     lsr.l        #3,d3
  473.     neg.l        d1
  474.     jmp        .jmp(pc,d1.l*2)
  475. .loop:    move.l        d2,(a0)+
  476.     move.l        d2,(a0)+
  477.     move.l        d2,(a0)+
  478.     move.l        d2,(a0)+
  479.     move.l        d2,(a0)+
  480.     move.l        d2,(a0)+
  481.     move.l        d2,(a0)+
  482.     move.l        d2,(a0)+
  483. .jmp:    subq.l        #1,d3
  484.     bpl.s        .loop
  485. *---------------------------------------------------------------*
  486. *    Clear remaining segment (bytes: 0->7)            *
  487. *---------------------------------------------------------------*
  488.     move.l        d4,d0
  489.     sub.l        a0,d0
  490.     bra.s        .c2g
  491. .c2l:    move.b        d2,(a0)+
  492. .c2g:    dbra        d0,.c2l
  493. *---------------------------------------------------------------*
  494. .done:    movem.l        (sp)+,d0-d4/a0
  495.     rts
  496.  
  497. *-------------------------------------------------------*
  498. *    Adjust vertical screen height            *
  499. *-------------------------------------------------------*
  500. adjust_scanlines:
  501. *-------------------------------------------------------*    
  502.     tst.b        adjust
  503.     bne.s        .go
  504. .err:    rts
  505. .go:    subq.b        #1,adjust
  506. *-------------------------------------------------------*    
  507. *    Don't adjust scanlines unless VIDEL is used    *
  508. *-------------------------------------------------------*    
  509.     tst.b        videl_mode
  510.     beq.s        .err
  511. *-------------------------------------------------------*    
  512. *    Remove unused scanlines on VIDEL modes        *
  513. *-------------------------------------------------------*    
  514.     move.w        scan_shift,d0
  515.     move.w        height,d6
  516.     tst.b        halflines
  517.     beq.s        .vcont
  518.     add.w        d6,d6
  519. .vcont:    move.w        screen_h,d7
  520.     lsl.w        d0,d6
  521.     lsl.w        d0,d7
  522.     sub.w        d6,d7
  523.     lsr.w        d7
  524.     move.w        upper_border,d1
  525.     move.w        lower_border,d2
  526.     add.w        d7,d1
  527.     sub.w        d7,d2    
  528.  
  529. ;    subq.w        #1,d1
  530. ;    subq.w        #1,d2
  531. ;    and.w        #-2,d1
  532. ;    and.w        #-2,d2
  533. ;    addq.w        #1,d1
  534. ;    addq.w        #1,d2
  535.  
  536.     move.w        d2,SCAN_STOP.w
  537.     move.w        d1,SCAN_START.w
  538. *-------------------------------------------------------*    
  539. *    Set up relevant 'detail' bits            *
  540. *-------------------------------------------------------*
  541.     move.w        $FFFF82C2.w,d0
  542.     move.w        d0,d1
  543.     and.w        #~%11,d0
  544.     tst.b        dline_active
  545.     beq.s        .nodl
  546.     bset        #0,d0
  547. .nodl:    tst.b        ilace_active
  548.     beq.s        .noil
  549.     bset        #1,d0
  550. .noil:    cmp.w        d0,d1
  551.     beq.s        .same
  552.     move.w        d0,$FFFF82C2.w
  553. .same:    rts
  554.  
  555. *-------------------------------------------------------*
  556. centre_screen:
  557. *-------------------------------------------------------*
  558.     move.l        ScreenLog,d0
  559.     move.w        width,d2
  560.     move.w        screen_w,d1
  561.     tst.b        halfrows
  562.     beq.s        .no
  563.     add.w        d2,d2
  564. .no:    sub.w        d2,d1
  565.     lsr.w        d1
  566.     ext.l        d1
  567.     add.l        d1,d1
  568.     add.l        d1,d0
  569.  
  570.     tst.b        videl_mode
  571.     bne.s        .cont
  572.  
  573.     move.w        height,d2
  574.     move.w        screen_h,d1
  575.     tst.b        halflines
  576.     beq.s        .no2
  577.     add.w        d2,d2
  578. .no2:    sub.w        d2,d1
  579.     lsr.w        d1
  580.     mulu.w        bytewidth,d1
  581.     add.l        d1,d0
  582.     
  583. .cont:    move.l        d0,screen
  584.     rts
  585.  
  586.  
  587. *---------------------------------------------------------------*
  588.             data
  589. *---------------------------------------------------------------*
  590.     
  591. ;default_modecode:    dc.w    bpl8|hires|lace
  592. ;default_modecode:    dc.w    bpl4|hires|lace
  593. ;default_modecode:    dc.w    bpl8
  594.  
  595. default_modecode:    dc.w    true
  596. ;default_modecode:    dc.w    true|lace
  597. ;default_modecode:    dc.w    true|lace|hires
  598.  
  599. ;default_modecode:    dc.w    true|pal|os
  600. ;default_modecode:    dc.w    true|lace|hires|pal|os
  601.     
  602. *---------------------------------------------------------------*
  603.             bss
  604. *---------------------------------------------------------------*
  605.  
  606. sys_default_width:    ds.w    1    ;320    ; default width
  607. sys_default_height:    ds.w    1    ;168    ; vertical normal mode (status bar)
  608. sys_expanded_height:    ds.w    1    ;200    ; vertical fullscreen mode
  609. sys_base_aspect:    ds.w    1    ;200    ; base reference (unadjusted) ratio.
  610. sys_vga_aspect:        ds.w    1    ;200    ; relative VGA aspect ratio.
  611. sys_rgb_aspect:        ds.w    1    ;168    ; relative PAL aspect ratio.
  612.  
  613. os_palette:        ds.l    256
  614. xb_palette:        ds.l    256
  615.  
  616. os_screen:        ds.l    1
  617. os_screen_size:        ds.l    1
  618. os_screen_clone:    ds.l    1
  619.  
  620. temp_physbase:        ds.l    1
  621. phys_size:        ds.l    1
  622. phys_handle:        ds.l    1
  623.  
  624. temp_modecode:        ds.w    1
  625. modecode:        ds.w    1
  626. screen_w:        ds.w    1
  627. screen_h:        ds.w    1
  628.  
  629. os_modecode:        ds.w    1
  630. os_screen_w:        ds.w    1
  631. os_screen_h:        ds.w    1
  632.  
  633. brick_bat:        ds.b    1
  634. monitor_type:        ds.b    1
  635.             even
  636.  
  637. screen_ptrs:                    ; cyclic screen pointers
  638. ScreenLog:        ds.l    1    
  639. ScreenBak:        ds.l    1    
  640. ScreenPhy:        ds.l    1    
  641. screen:            ds.l    1        ; back screen for drawing
  642.  
  643. display_start:        ds.l    1
  644. display_size:        ds.l    1
  645.  
  646. old_screen:        ds.l    1        ; old screen info
  647. old_border:        ds.l    1
  648.  
  649. bytewidth:        ds.w    1        ; bytes / line in screen
  650. scrwidth:        ds.w    1        ; pixels / line in screen
  651. upper_border:        ds.w    1        ; custom border sizes
  652. lower_border:        ds.w    1
  653. scan_shift:        ds.w    1
  654.  
  655. clearcount:        ds.b    1
  656. refresh:        ds.b    1        ; force #n successive screen-clears
  657. adjust:            ds.b    1        ; force video scanline readjustments
  658. halflines:        ds.b    1        ; vertical low-detail
  659. halfrows:        ds.b    1        ; horizontal low-detail
  660. fullscreen:        ds.b    1        ; 320x200 'super' screen mode
  661. videl_mode:        ds.b    1
  662.  
  663. dline_active:        ds.b    1
  664. ilace_active:        ds.b    1
  665. dpixel_active:        ds.b    1
  666.             even
  667.  
  668. *---------------------------------------------------------------*
  669.             text
  670. *---------------------------------------------------------------*
  671.